#ifndef _EngineTexture_h_
#define _EngineTexture_h_

#include "BlazeEngineConfig.h"

#include "BlazeEngineCommon.h"
#include "BlazeEngineResource.h"

class _BlazeExports BeTexture : public BeResource
{
public:
	BeTexture();
	~BeTexture();

	virtual bool Install() = 0;
	virtual void Uninstall() = 0;

	virtual void* Lock() = 0;
	virtual void Unlock() = 0;

	virtual void SetType(TextureType Type);
	virtual void SetNumMipmaps(unsigned int uiNumMipmaps);
	virtual void SetWidth(unsigned int uiWidth);
	virtual void SetHeight(unsigned int uiHeight);
	virtual void SetDepth(unsigned int uiDepth);

	virtual TextureType GetType();
	virtual unsigned int GetNumMipmaps();
	virtual unsigned int GetWidth();
	virtual unsigned int GetHeight();
	virtual unsigned int GetDepth();

protected:

	TextureType m_Type;
	unsigned int m_uiNumMipmaps;

	unsigned int m_uiWidth;
	unsigned int m_uiHeight;
	unsigned int m_uiDepth;

};

#endif
